/**
 * 文件上传 相关配置
 */


import base from "./base";
import { assignDeep } from "../utils/common";
import setconfig from "../config";

let defaultConfig = {
  /*
    富文本编辑器上传文件时，所使用的上传类型
    server  服务器上传
    qiniu 七牛
    oss 阿里云OSS
    bos 百度云BOS
    cos 腾讯云COS
  */
  editor_upload_type: "server",

  /*
    因为 Image Tools 插件存在问题，
    修改图片后，必须在富文本编辑器区域内点击其它内容或空白区域（点击菜单和Toolbar都不行），
    让当前图片取消选中状态后，才会自动上传修改后的图片，并返回在线地址。
    否则在保存的时候（比如修改后，没有点Tinymce编辑区域其它空白地方），
    返回的内容会是这个图片的Base64编码，相当于将图片的所有内容包含进了要提交的HTML代码里。
    碰到小图片还好，碰到大图，就会影响表单提交的传输速度，以及将来页面的展示速度。
    所以默认未启用 Image Tools 插件。
    可在 /components/tinymce/plugins.js 文件中加上该插件 （名称叫 imagetools），
    但后果自负。

    Tinymce 的Image Tools 插件，因跨域问题，无法编辑来自其他域的图像。
    要想编辑这些图像，需要在以下属性中配置上跨域数据。
    注意，不需要填写 http(s):// 的内容。
    比如：图片服务器地址是 http://image.server.com，那这里只需要填：
    tinymce_imagetools_cors_hosts: [ "image.server.com"],
  */
  // tinymce_imagetools_cors_hosts: [ "bj.bcebos.com", "qdx3edfi9.bkt.clouddn.com"],

  /*
        服务器上传配置
     */
  server: {
    // 上传的服务器接口地址（完整地址）
    action: base.server_root + "/index/upload/getUpload",

    // 是否使用分块上传，使用分块上传需要服务器接口支持
    multipart: false
  },

  /*
    阿里云 OSS 文件上传配置
  */
  oss: {
    /**
     * 获得sts数据的接口地址，返回的数据格式为
      {
        code: 200,
        msg: "success",
        data: {
            credentials: {
                AccessKeyId: "",
                AccessKeySecret: "",
                SecurityToken: "",
            }
        }
      }
    * @type {[type]}
    */
    // get_sts_token_url: base.server_root + "/index/upload/ossSts",
    get_sts_token_url: null,

    /* OSS其它配置 */
    upload_config: {
      // bucket 所在的区域，默认 oss-cn-hangzhou。
      region: "oss-cn-beijing",

      // OSS域名。
      endpoint: "oss-cn-beijing.aliyuncs.com",

      // 通过控制台创建的bucket。
      bucket: "",

      // 通过阿里云控制台创建的access key。
      accessKeyId: "",

      // 通过阿里云控制台创建的access secret。
      accessKeySecret: "",

      // 是否使用阿里云内网访问，默认false。比如通过ECS访问OSS，则设置为true，采用internal的endpoint可节约费用。
      internal: false,

      // 是否支持上传自定义域名，默认false。如果cname为true，endpoint传入自定义域名时，自定义域名需要先同bucket进行绑定。
      cname: false,

      // bucket是否开启请求者付费模式，默认false。 具体可查看请求者付费模式(https://help.aliyun.com/document_detail/91337.html?spm=a2c4g.11186623.2.8.7f225557y594dy#concept-yls-jm2-2fb)。
      isRequestPay: false,

      // (secure: true) 则使用 HTTPS， (secure: false) 则使用 HTTP
      secure: true,

      // 超时时间，默认 60s。
      timeout: 60000
    }
  },

  /*
        七牛云上传配置
     */
  qiniu: {
    // 用于请求获得七牛上传Token的后台接口地址
    get_token_url: base.server_root + "/index/Upload/qiniuToken",

    // 上传时的配置，文档： https://developer.qiniu.com/kodo/sdk/6889/javascript-sdk-historical-document-2-x#3
    upload_config: {
      // 是否使用 cdn 加速域名，为布尔值，true 表示使用，默认为 false
      useCdnDomain: false,

      // 是否禁用日志报告，为布尔值，默认为false
      disableStatisticsReport: false,

      // 选择上传域名区域；当为 null 或 undefined 时，自动分析上传域名区域
      region: null,

      // 上传自动重试次数（整体重试次数，而不是某个分片的重试次数）；默认 3 次
      retryCount: 3,

      // 分片上传的并发请求量，number，默认为3；
      concurrentRequestLimit: 3,

      // 是否开启 MD5 校验，为布尔值； 默认为 false
      checkByMD5: false
    }
  },

  /*
        百度云上传配置
     */
  bos: {
    /**
     * 获得sts数据的接口地址，返回的数据格式为
     {
        code: 200,
        msg: "success",
        data: {
            credentials: {
                ak: "",
                sk: "",
                sessionToken: "",
            }
        }
      }
      * @type {[type]}
      */
    get_sts_token_url: null,

    upload_config: {
      credentials: {
        ak: "",
        sk: ""
      },
      bucket: ""
    }
  },

  /*
        腾讯云上传配置
     */
  cos: {
    /**
     * 获得sts数据的接口地址，返回的数据格式为
     {
        code: 200,
        msg: "success",
        data: {
            credentials: {
                TmpSecretId: "",
                TmpSecretKey: "",
                XCosSecurityToken: "",
                // 建议返回服务器时间作为签名的开始时间，避免用户浏览器本地时间偏差过大导致签名错误
                StartTime: "", // 时间戳，单位秒，如：1580000000
                ExpiredTime: "", // 时间戳，单位秒，如：1580000900
                ScopeLimit: false, // 细粒度控制权限需要设为 true，会限制密钥只在相同请求时重复使用
            }
        }
    }
    * @type {[type]}
    */
    get_sts_token_url: null,

    // (secure: true) 则使用 HTTPS， (secure: false) 则使用 HTTP
    secure: false,

    bucket: "",
    region: "",

    upload_config: {
      SecretId: "",
      SecretKey: ""
    }
  }
};


let rconfig = assignDeep({},defaultConfig, setconfig.upload || {});

export default rconfig;
